RAIS  3.2
C:/Projekte/RAIS/FillCustomQueryTableCL/QueryNames.cs
Go to the documentation of this file.
00001 using System;
00002 using System.Collections.Generic;
00003 using System.Linq;
00004 using System.Text;
00005 using System.IO;
00006 using RAIS.DataAccessLayer;
00007 using System.Xml;
00008 using System.Data;
00009 using System.Data.SqlClient;
00010 
00011 namespace FillCustomQueryTableCL
00012 {
00013     public class QueryNames
00014     {
00015         public static void CreatXml(string connectionString, string scriptsDirectory, string queriesFileName)
00016         {
00017             List<string> files = GetScriptsFromDirrectory(scriptsDirectory);
00018             
00019             using (SqlConnection sqlConnection = new SqlConnection(connectionString))
00020             {
00021                 sqlConnection.Open();
00022                 using (XmlWriter xw = XmlWriter.Create(queriesFileName))
00023                 {
00024                     xw.WriteStartElement("Queries");
00025                     foreach (string str in files)
00026                     {
00027                         xw.WriteStartElement("Query");
00028                         xw.WriteAttributeString("Name", str);
00029 
00030                         if (str.StartsWith("Statistics"))
00031                             xw.WriteAttributeString("Type","Statistics");
00032                         else if (str.StartsWith("Query"))
00033                             xw.WriteAttributeString("Type", "Query");
00034                         else if (str.StartsWith("Preselection List"))
00035                             xw.WriteAttributeString("Type", "Preselection List");
00036                         else if (str.StartsWith("Preselection Filter"))
00037                             xw.WriteAttributeString("Type", "Preselection Filter");
00038                         else if (str.StartsWith("Entry Filter") || str.StartsWith("UnAllocation - "))
00039                             xw.WriteAttributeString("Type", "Entry Filter");
00040                         else if (str.StartsWith("Consistency Check"))
00041                             xw.WriteAttributeString("Type", "Consistency Check");
00042                         else
00043                             xw.WriteAttributeString("Type", "Other");
00044 
00045                         xw.WriteEndElement();
00046                     }
00047                     xw.WriteEndElement();
00048                 }
00049             }
00050         }
00051 
00052         private static List<string> GetScriptsFromDirrectory(string path)
00053         {
00054             List<string> files = new List<string>();
00055             files.AddRange(Directory.GetFiles(path + "\\Create Preselection Filters"));
00056             files.AddRange(Directory.GetFiles(path + "\\Create Queries"));
00057             files.AddRange(Directory.GetFiles(path + "\\Create Scripts"));
00058             files.AddRange(Directory.GetFiles(path + "\\Create Statistics"));
00059 
00060             return FilterQueries(files);
00061         }
00062 
00063         private static List<string> FilterQueries(List<string> queries)
00064         {
00065             List<string> ret = new List<string>();
00066             foreach (string query in queries)
00067             {
00068                 string str = query.Substring(query.LastIndexOf("\\") + 1);
00069                 str = str.Replace("Create FN ", "");
00070                 str = str.Replace(".sql", "");
00071                 str = str.Replace("  ", " ");
00072                 if (!ret.Contains(str) && !str.StartsWith("Create ") && !str.StartsWith("Drop ") && !str.StartsWith("ufn_") /*&& !str.StartsWith("UnAllocation - ")*/)
00073                     ret.Add(str);
00074             }
00075             return ret;
00076         }
00077     }
00078 }